package project4;
import  java.util.Scanner;
/**
 *  学生操作的功能类
 */
public class StudentDao {
    // 定义一个全局的学生数组，用来保存学生对象
    Student students[] = new Student[10];
    // 创建一个控制台输入工具对象
    Scanner scanner = new Scanner(System.in);
    // 页面
    public void ui(){
        // 无限循环，实现整个项目的持续性操作
        while (true){
            System.out.println("**************************");
            System.out.println("     学生管理系统");
            System.out.println("**************************");
            System.out.println("    1 -- 添加学生信息");
            System.out.println("    2 -- 删除学生信息");
            System.out.println("    3 -- 修改学生信息");
            System.out.println("    4 -- 查询学生信息");
            System.out.println("    5 -- 退出系统");
            System.out.println("**************************");
            System.out.println("请选择功能：");
            int n = scanner.nextInt();
            if(n==1){
                add();
            }else if(n==2){
                delete();
            }else if(n==3){
                update();
            }else if(n==4){
                select();
            }else if(n==5){
                System.out.println("退出成功，欢迎下次光临！");
                break;
            }else{
                System.out.println("你选择的功能还没有开发，请期待......");
            }
        }
    }

    // 添加
    public void add(){
        // 1.收集学生的动态信息
        System.out.println("请输入学生编号");
        int id = scanner.nextInt();
        // 一旦输入判断立马判断是否唯一
        for(Student s : students){
            if(s!=null){
                if(s.getId() == id){  // 不唯一
                    System.out.println("你输入的编号已存在，请重新输入");
                    add();
                    return;  // 终止方法体
                }
            }
        }
        System.out.println("请输入学生的姓名");
        String name = scanner.next();
        System.out.println("请输入学生的性别");
        String sex = scanner.next();
        System.out.println("请输入学生的年龄");
        int age = scanner.nextInt();
        // 2.组成对象
        Student s = new Student(id,name,sex,age);
        // 3.放入数组 [放入到数组中的第一个null的位置处]
        for(int i=0;i<students.length;i++){
            if(students[i] == null ){   // 说明找到了第一个null
                students[i] = s;
                System.out.println("添加成功！！！");
                break;   // 当前当对象放入数组中时，立马终止
            }
        }
    }

    // 修改
    public void update(){
        // 1. 控制台输入编号
        System.out.println("请输入你要修改的学生编号");
        int id = scanner.nextInt();
        boolean bo = false;
        // 2.遍历数组，获取你要修改的对象，并展示
        for(Student  s :students){
            if(s!=null){
                if(id==s.getId()){  // 进入修改的功能
                    bo = true;
                    s.show();
                    // 3.确定修改吗？(只修改除了编号之外的所有的字段)
                    System.out.println("确定修改吗(y/n)?");
                    String str = scanner.next();
                    // 4.修改成功与修改失败
                    if(str.equals("y")){  // 修改
                        System.out.println("请输入修改后的姓名");
                        String name = scanner.next();
                        s.setName(name);   // 为name重新赋值
                        System.out.println("请输入修改后的性别");
                        s.setSex(scanner.next());
                        System.out.println("请输入修改后的年龄");
                        s.setAge(scanner.nextInt());
                        System.out.println("修改成功！");
                    }else{
                        System.out.println("取消修改！");
                    }
                }

            }
        }
        // 5.查无此人
        if(!bo){
            System.out.println("查无此人");
        }
    }

    // 删除
    public void delete(){
        // 1.控制台输入编号
        System.out.println("请输入你要删除的学生的编号");
        int id = scanner.nextInt();
        boolean bo = false;
        // 2.根据编号来查询信息，并展示
        for(int i=0;i<students.length;i++){
            Student s = students[i];
            if(s!=null){  // 判断不能为null
                if(id == s.getId()){  // 找到了你要删除的对象
                    bo=true;
                    s.show();   // 预览数据
                    // 3.提示确定删除吗？
                    System.out.println("确定删除吗(y/n)？");
                    String str = scanner.next();
                    // 4.删除
                    if(str.equals("y")){
                        students[i] = null;  // 删除
                        System.out.println("删除成功！");
                    }else{
                        System.out.println("取消删除！");
                    }
                }
            }
        }

        // 5.查无此人
        if(!bo){
            System.out.println("查无此人！");
        }
    }

    // 查看所有的学生信息
    public void select(){
        boolean bo = false;     // 默认值
        for(Student s : students){
            if(s!=null){
                bo = true;  // 有数据的值
                s.show();
            }
        }
        // 二次判断bo是否有数据
        if(!bo){
            System.out.println("查无此数据！");
        }
    }

}
